package com.bayi.storage.utils;

import java.io.File;
import java.io.FileInputStream;
import java.text.DecimalFormat;

/**
 * @author Administrator on 2023/2/6.
 * <p>
 * 站在顶峰 看世界
 * 落到谷底 思人生
 */
public class GetFileSize {

    public GetFileSize() {

    }

    public static long getFileSizes(File f) {
        long s = 0;
        try {
            if (f.exists()) {
                FileInputStream fis = null;
                fis = new FileInputStream(f);
                s = fis.available();
                fis.close();
            } else {
                f.createNewFile();
                System.out.println("文件夹不存在");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return s;
    }

    /**
     * 递归
     */
    public static long getFileSize(File f) {
        long size = 0;
        File flist[] = f.listFiles();
        for (int i = 0; i < flist.length; i++) {
            if (flist[i].isDirectory()) {
                size = size + getFileSize(flist[i]);
            } else {
                size = size + flist[i].length();
            }
        }
        return size;
    }

    /**
     * 转换文件大小
     */
    public String FormentFileSize(long fileS) {
        DecimalFormat df = new DecimalFormat("#.00");
        String fileSizeString = "";
        if (fileS < 1024) {
            fileSizeString = df.format((double) fileS) + "B";
        } else if (fileS < 1048576) {
            fileSizeString = df.format((double) fileS / 1024) + "K";
        } else if (fileS < 1073741824) {
            fileSizeString = df.format((double) fileS / 1048576) + "M";
        } else {
            fileSizeString = df.format((double) fileS / 1073741824) + "G";
        }
        return fileSizeString;
    }


    /**
     * 转换文件大小
     */
    public static boolean getFormentFileSize(long fileS) {
        boolean fileSizeString = false;
        if (fileS > 1073741824) {
//        if (fileS > 2258693) {
            fileSizeString = true;
        }
        return fileSizeString;
    }

//	/**
//	 * 递归求取目录文件个数
//	 * */
//	public long getlist(File f) {
//		long size = 0;
//		File flist[] = f.listFiles();
//		System.out.println("-------------" + flist.length);
//		size = flist.length;
//		for (int i = 0; i < flist.length; i++) {
//			if (flist[i].isDirectory()) {
//				size = size + getlist(flist[i]);
//				size--;
//			}
//		}
//		return size;
//	}

}

